package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

/**
 * List接口继承了collection
 * list集合的特点：可以存放重复元素且有序
 * List提供了一套通过下标操作元素的方法
 * 常用实现类：
 * java.util.ArrayList:内部使用数组实现，查询性能更好
 * java.util.LinkList:内部使用链表实现，首尾增删性能更好
 */
public class ListDemo {
    public static void main(String[] args) {
        //List<String> list=new LinkedList<>();---和下面语句的功能一样
        List<String> list=new ArrayList<>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println("list:"+list);
        /*
        E get(int index)----根据下标获取指定元素
         */
        String e=list.get(2);//获取第三个元素
        System.out.println(e);
        /*
        E set(int index,E e)--将给定元素设置到指定位置，并返回被替换的元素
         */
        e= list.set(2,"six");//将第三个元素换成six
        System.out.println(list);
        System.out.println("被替换的元素："+e);
        /*
        反转集合
         */
        for(int i=0;i<list.size()/2;i++){
            //获取正数位置的元素
            String str= list.get(i);
            //将正数位置的元素设置到倒数位置并且获取被替换的倒数位置元素
            str=list.set(list.size()-1-i,str);
            //将原倒数位置的元素设置到正数位置上
            list.set(i,str);
        }
        System.out.println(list);
        //将三句循环合起来
        for(int i=0;i< list.size()/2;i++){
            list.set(i,list.set(list.size()-1-i,list.get(i)));
        }
        System.out.println(list);
        //方法3：直接使用集合里的工具
        Collections.reverse(list);
        System.out.println(list);


    }
}
